package com.example.news;

import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.IComponent;
import com.example.news.headlinenews.HeadlineNewFragment;

/**
 * News组件类，向外暴露当前组件提供的服务
 * 实现IComponent接口即可
 */
public class NewsComponent implements IComponent {
    @Override
    public String getName() {
        //指定组件的名称
        return "News";
    }

    /**
     * onCall方法的返回值是有特殊意义的，要慎重对待
     *
     * true: 异步实现
     *     onCall方法执行完成后，CC框架会等待组件在未来的某个时间点调用CC.sendCCResult(callId, result)返回本次组件调用结果
     * false: 同步实现
     *     在return之前调用CC.sendCCResult(callId, result)返回本次组件调用结果，否则系统会返回-10的状态码给调用方
     * @param cc CC
     * @return true or false
     */
    @Override
    public boolean onCall(CC cc) {
        String actionName = cc.getActionName();
        //响应actionName为"getHeadlineNewsFragment"的组件调用
        if ("getHeadlineNewsFragment".equals(actionName)) {
            CCResult ccResult = new CCResult();
            ccResult.addData("fragment", new HeadlineNewFragment());
            //返回处理结果给调用方
            CC.sendCCResult(cc.getCallId(), ccResult);
            return true;
        }else{
            //其它actionName当前组件暂时不能响应，可以通过如下方式返回状态码为-12的CCResult给调用方
            CC.sendCCResult(cc.getCallId(),CCResult.errorUnsupportedActionName());
            return false;
        }
    }
}
